gl renderer: Handle 0/1 progress in crossfade nodes
authorTimm Bäder <mail@baedert.org>
Sun, 21 Jun 2020 05:17:54 +0000 (07:17 +0200)
committerTimm Bäder <mail@baedert.org>
Sat, 27 Jun 2020 08:51:06 +0000 (10:51 +0200)
gsk/gl/gskglrenderer.c

index a451338d59830ac19237f6c38b4d8fb3f209388a..b626c9e7ce09638a0e0c7046bdfa3b6b56a9db3a 100644 (file)
@@ -2241,12 +2241,23 @@ render_cross_fade_node (GskGLRenderer   *self,
 {
   GskRenderNode *start_node = gsk_cross_fade_node_get_start_child (node);
   GskRenderNode *end_node = gsk_cross_fade_node_get_end_child (node);
-  float progress = gsk_cross_fade_node_get_progress (node);
+  const float progress = gsk_cross_fade_node_get_progress (node);
   TextureRegion start_region;
   TextureRegion end_region;
   gboolean is_offscreen1, is_offscreen2;
   OpCrossFade *op;
 
+  if (progress <= 0)
+    {
+      gsk_gl_renderer_add_render_ops (self, start_node, builder);
+      return;
+    }
+  else if (progress >= 1)
+    {
+      gsk_gl_renderer_add_render_ops (self, end_node, builder);
+      return;
+    }
+
   /* TODO: We create 2 textures here as big as the cross-fade node, but both the
    * start and the end node might be a lot smaller than that. */